package com.zjsru.plan2025.oneday;

/**
 * 1328. 破坏回文串
 *
 * @Author: cookLee
 * @Date: 2025-03-05
 */
public class BreakPalindrome {

    /**
     * 主
     * \
     * 输入：palindrome = "abccba"
     * 输出："aaccba"
     * 解释：存在多种方法可以使 "abccba" 不是回文，例如 "zbccba", "aaccba", 和 "abacba" 。
     * 在所有方法中，"aaccba" 的字典序最小。
     * \
     * 输入：palindrome = "a"
     * 输出：""
     * 解释：不存在替换一个字符使 "a" 变成非回文的方法，所以返回空字符串。
     * \
     *
     * @param args args
     */
    public static void main(String[] args) {
        BreakPalindrome breakPalindrome = new BreakPalindrome();
        String palindrome = "abccba";
        System.out.println(breakPalindrome.breakPalindrome(palindrome));
    }

    /**
     * 贪心
     *
     * @param palindrome 回文
     * @return {@link String}
     */
    public String breakPalindrome(String palindrome) {
        int len = palindrome.length();
        if (len == 1) {
            return "";
        }
        char[] array = palindrome.toCharArray();
        //前半部分字符串只要一个字符变为a即是最小的
        for (int i = 0; i * 2 + 1 < len; i++) {
            if (array[i] != 'a') {
                array[i] = 'a';
                return new String(array);
            }
        }
        //全是a的回文情况下，只改变最后一个
        array[len - 1] = 'b';
        return new String(array);
    }

}
